<?php

/**
 * Permite crear y eliminar los nombres de las zonas SIMERT
 * @package simertweb 
 * @subpackage controllers  
 * @category Administración
 * @author Grecia Espinoza <mrcl2587@gmail.com>
 * @author Juan Maldonado  <jgmaldonadoj@gmail.com> 
 * @version 1.0 
 */
class Zonas extends CI_Controller {

    function __construct() {
        parent::__construct();
        $this->load->model('mpersona');
        $this->load->model('mempleado');
        $this->load->model('mrol');
        $this->load->model('mzona');
        $this->load->model('acceso');
    }

    /**
     * Muestra una lista con los nombres de las zonas
     */
    function index() {
        if ($this->acceso->sesion() == 1) {
            $data['listazonas'] = $this->mzona->listartodasZonas();
            $this->load->view('includes/menu_izquierdo');
            $this->load->view('includes/cabecera');
            $this->load->view('zonas', $data);
            $this->load->view('includes/footer');
        } else {
            $this->load->view('autenticacion');
        }
    }

    /**
     * Permite eliminar el nombre de una zona 
     */
    function eliminar_zonas() {
        $this->form_validation->set_rules('lista', ' ', 'callback_eliminar_check');
        if ($this->form_validation->run() === TRUE) {
            $this->mzona->eliminar($_POST["lista"]);
            $this->index();
        } else {
            $this->index();
        }
    }

    /**
     * Válida que la cadena contenga caracteres alfabéticos, espacios y tildes
     * @param type $str_in es el parámetro que se ingresa en el formulario
     * @return boolean
     */
    function alpha_space($str_in = '') {
        if (!preg_match("/^([-a-záéíóúÁÉÍÓÚñÑ ])+$/i", $str_in)) {
            $this->form_validation->set_message('alpha_space', '<p style="color: red">El campo %s acepta solo carateres alfabéticos.</p>');
            return FALSE;
        } else {
            return TRUE;
        }
    }

    /**
     * Valida que el nombre de la zona no se duplique
     * @return boolean
     */
    function zonas_check() {
        if ($this->mzona->validar_zona() == TRUE) {
            return TRUE;
        } else {
            $this->form_validation->set_message('zonas_check', '<p style="color: red">La zona ya existe</p>');
            return FALSE;
        }
    }

    /**
     * Permite guardar un nombre de zona
     */
    function guardar() {
        $this->form_validation->set_rules('zona', ' ', 'required|alpha_space|min_length[3]|max_length[40]|callback_guardar_check|trim');
        if ($this->form_validation->run() === TRUE) {
            $this->mzona->guardar(strtoupper($_POST['zona']));
            $data['listazonas'] = $this->mzona->listartodasZonas();
            $this->load->view('includes/menu_izquierdo');
            $this->load->view('includes/cabecera');
            $this->load->view('zonas', $data);
            $this->load->view('includes/footer');
        } else {
            $this->index();
        }
    }

    /**
     * Valiad que el nombre de la zona no se duplique
     * @return boolean
     */
    function guardar_check() {
        if ($this->mzona->validar_guardar($_POST["zona"]) == 0) {
            return TRUE;
        } else {
            $this->form_validation->set_message('guardar_check', '<p style="color: red">La zona ingresada ya existe</p>');
            return FALSE;
        }
    }

    /**
     * Valida si se puede eliminar una zona 
     * @return boolean
     */
    function eliminar_check() {
        if ($this->mzona->validar_eliminar($_POST["lista"]) != TRUE) {
            return TRUE;
        } else {
            $this->form_validation->set_message('eliminar_check', '<p style="color: red">No se puede eliminar la ZONA seleccionada</p>');
            return FALSE;
        }
    }

}

?>
